package com.shrct.businessprocess.budget;

import com.shrct.businessprocess.budget.RCBudget;
import com.shrct.businessprocess.budget.RCBudgetCategory;
import com.shrct.businessprocess.budget.impl.RCCostBreakDownImpl;
import com.shrct.businessprocess.budget.proxy.RCCostBreakDownProxy;
import com.shrct.businessprocess.diagnose.ICanDiagnose;
import com.shrct.businessprocess.diagnose.IDiagnoseAcceptor;
import com.shrct.businessprocess.project.RCExchangeRate;
import com.shrct.businessprocess.project.RCProject;
import com.shrct.businessprocess.project.RCProjectMoney;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;

@EntityImplementation(implementBy = RCCostBreakDownImpl.class)
public interface RCCostBreakDown extends IModelObject, ICanDiagnose {
  public abstract RCProject getProject();
  
  public abstract RCCostBreakDown setProject(final RCProject project);
  
  public abstract Collection<RCBudget> getBudgets();
  
  public abstract RCCostBreakDown removeFromBudgets(final RCBudget rCBudget);
  
  public abstract RCCostBreakDown removeAllBudgets();
  
  public abstract Double getRemainAmount(final RCBudgetCategory part);
  
  public abstract RCProjectMoney getContractPrice();
  
  public abstract RCProjectMoney getNetPrice();
  
  public abstract RCProjectMoney getGrossProfit();
  
  public abstract Double getGrossProfitRate();
  
  public abstract RCProjectMoney getSalesExCost();
  
  public abstract RCProjectMoney getSalesActualExCost();
  
  public abstract RCProjectMoney getAdjustTSC();
  
  public abstract RCProjectMoney getSalesGrossProfit();
  
  public abstract Double getSalesGrossProfitRate();
  
  public abstract RCExchangeRate getExchangeRate();
  
  public abstract RCProjectMoney getZeroAmount();
  
  public abstract Double getTSCAmount();
  
  public abstract void diagnose(final IDiagnoseAcceptor acceptor);
  
  public abstract RCCostBreakDownProxy toProxy();
}
